package com.xiaoxiong.database;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * 创建数据库和相应的表的类
 * 
 * @author pure
 */
public class DatabaseHelper extends SQLiteOpenHelper {

	// 类没有实例化,是不能用作父类构造器的参数,必须声明为静态
	private String dbName; // 数据库名称
	private static final int version = 1; // 数据库版本

	public DatabaseHelper(Context context, String dbName) {
		// 第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类
		super(context, dbName, null, version);
		this.dbName = dbName;
	}

	/*
	 * 如果数据库不存在，Android系统会自动生成一个数据库，接着调用onCreate()方法，onCreate()方法在初次生成数据库时才会被调用，
	 * 在onCreate()方法里可以生成数据库表结构及添加一些应用使用到的初始化数据。
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {

		// 若创建了教务系统数据库
		if (dbName == "tmis") {
			// 创建课程表
			db.execSQL("create table syllabus("
					+ "course_name varchar(255) not null,"// 课程名称
					+ "course_time varchar(255) not null,"// 上课时间
					+ "teacher varchar(255) not null,"// 教师
					+ "classroom varchar(255) not null,"// 教室
					+ "class_week varchar(255) not null,"// 上课周
					+ "class_day int not null,"// 星期几上课
					+ "part int not null,"// 第几节
					+ "color int not null,"// 课程背景颜色
					+ "id int not null)");// 课程id

			// 创建个人信息表
			db.execSQL("create table personal_info("
					+ "title varchar(255) not null,"// 标题
					+ "info varchar(255) not null)");// 内容

			// 创建考勤信息表
			db.execSQL("create table attendance_info("
					+ "course_code varchar(255) not null,"// 课程代码
					+ "attendance_info varchar(255) not null,"// 考勤信息
					+ "course_name varchar(255) not null)");// 课程名称

			// 创建必修课程表
			db.execSQL("create table compulsory_course("
					+ "semester varchar(255) not null,"// 开学学期
					+ "course_code varchar(255) not null,"// 课程代码
					+ "course_name varchar(255) not null,"// 课程名称
					+ "credit varchar(255) not null,"// 学分
					+ "exam_method varchar(255) not null,"// 考核方式
					+ "first_course varchar(255) not null,"// 先修课程
					+ "follow_course varchar(255) not null,"// 同修课程
					+ "study_time varchar(255) not null,"// 修读学年学期
					+ "score varchar(255) not null,"// 成绩
					+ "had_credit varchar(255) not null)");// 已得学分

			// 创建选修课程表
			db.execSQL("create table optional_course("
					+ "semester varchar(255) not null,"// 开学学期
					+ "course_code varchar(255) not null,"// 课程代码
					+ "course_name varchar(255) not null,"// 课程名称
					+ "credit varchar(255) not null,"// 学分
					+ "exam_method varchar(255) not null,"// 考核方式
					+ "first_course varchar(255) not null,"// 先修课程
					+ "follow_course varchar(255) not null,"// 同修课程
					+ "study_time varchar(255) not null,"// 修读学年学期
					+ "score varchar(255) not null,"// 成绩
					+ "had_credit varchar(255) not null)");// 已得学分

			// 创建平时成绩表
			db.execSQL("create table regular_grade("
					+ "course_code varchar(255) not null,"// 课程代码
					+ "course_name varchar(255) not null,"// 课程名称
					+ "url varchar(255) not null)");// 连接

			// 创建预交费用表
			db.execSQL("create table prepaid_expenses("
					+ "spend_item varchar(255) not null,"// 花费项
					+ "money varchar(255) not null)");// 费用

		}

		// 后面开发时有数据库和表要添加时,在这里添加

	}

	/**
	 * onUpgrade()方法在数据库的版本发生变化时会被调用，数据库的版本是由程序员控制的
	 */
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

	}

	/**
	 * 删除数据库
	 * 
	 * @param context
	 * @return 布尔值
	 * @author pure
	 */
	public boolean deleteDatabase(Context context, String dbName) {
		return context.deleteDatabase(dbName);
	}

}